// 8. object 类型   - 不严谨，不建议使用
let obj: object;
obj = { name: 'zs', age: 20 };
obj = [1, 2, 3];
obj = () => {};

// 9. Array 数组类型
// 方式一
let arr: number[];
arr = [1, 2, 3];
// 方式二 构造函数+ 标记的格式指定类型
let arr1: Array<string>;
arr1 = ['a', 'b']
let arr2: Array<string | number>;
arr2 = ['a', 'b', 10];

// 10. Tuple /ˈtʌpəl/  元组类型
// 基于数组，更加严格限制了数组的长度和类型
let names: [string, string, boolean];
names = ['詹姆斯', '科比', false];
// 扩展 以元组格式定义的数组 - 多维数组
let arr3: [string, number][];
arr3 = [['a', 1], ['v', 4]];

// 11. 枚举类型
// 在固定的几项数据中进行列出
enum List {
    Hello, Hi, Bonjour
}
// 使用枚举类型的数据
let n: number;
n = List.Hello;
n = List.Bonjour;
// 默认的值是0
// console.log(n);
enum List1 {
    Hello = 10, Hi = 8, Bonjour = 78
}
// 如果修改了其中的值，那么索引就会接着往后继续增加
let n1: number = List1.Bonjour;
// console.log(n1);
enum List2 {
    Hello, Hi = 'Hi', Bonjour = 'Bonjour'
}
// 改了一个字段为非数值，后续的字段则都需要改
let n3: string = List2.Bonjour;
console.log(n3);



